/****************************************************************************
 *   <SPG2 - Secure Password Generator>
 *   Copyright (C) 2010  <Robert Carr>
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *   
 *   @author Robert Carr (etftw)
 *   @version 2.5.3
 *   
 ***************************************************************************/

package spg2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.codec.digest.DigestUtils;


public class Authenticator 
{
	private String passphrase, keyChecksum;
	private File keyFile;
	
	private void generateChecksum()
	{
		if(keyFile.exists())
		{
			if(keyFile.isFile())
			{
				try {
					InputStream is = new FileInputStream(keyFile);
					keyChecksum = DigestUtils.md5Hex(is);
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	
	public Authenticator(String passphrase, File keyFile)
	{
		this.passphrase = passphrase;
		this.keyFile = keyFile;
		generateChecksum();
	}
	
	public Authenticator(String passphrase)
	{
		this.passphrase = passphrase;
		this.keyFile = null;
	}
	
	public Authenticator(File keyFile)
	{
		this.keyFile = keyFile;
	}
	
	public String getKey()
	{
		return keyChecksum;
	}
	
	public String getPassphrase()
	{
		return passphrase;
	}
}
